1. Field of the Present Invention
The present invention generally relates to the field of networked computing and more particularly to a method and system to improve server performance by handling static objects as special cases requiring reduced network processing.
2. History of Related Art
In the field of data processing networks, it is becoming increasingly common to provide services via servers or server systems that are accessible over a network. For purposes of this disclosure, a server system refers to a cluster in which a set of microprocessor-based server devices are connected on a local area network (LAN) to provide a common set of services to client applications. Cost consideration may frequently motivate the manufacturers and purchasers of servers to implement the servers with less than state-of-the-art technology and with a minimum of peripheral components. In a common implementation, for example, server clusters are designed as a set of diskless server devices that share disk storage via some form of networked storage whether it be a network attached storage (NAS) device or a storage area network (SAN).
Clients access servers generally in two modes, namely data retrieval and data updates. In data retrieval accesses, the subject of this disclosure, it is conceivable that execution may be dominated by network processing in which information is made suitable for transport across the network from a server to a client (or vice versa). The devices attached to a network must use a common protocol or set of protocols to transfer information. Network protocols are typically described in terms of protocol “layers”, where each layer of processing is related to a specific function. The Open Systems Interconnect (OSI) working group of the International Standards Organization (ISO) has distributed a widely recognized model (the OSI Reference Model) of a prototypical network. The OSI Reference Model describes a seven-layer network protocol, from the physical layer comprising the physical medium and the actual electrical signals of a network, to the application layer that acts as an interface between the network and application processes such as email.
Perhaps the most widely implemented network protocol is the suite of protocols commonly referred to as the Transmission Control Protocol/Internet Protocol (TCP/IP). TCP/IP provides the network backbone for a large number of data processing networks including the Internet. Each client and/or server connected to the Internet (or other TCP/IP compliant network) must include TCP/IP code that converts datagrams or packets transmitted over the network to a stream of bytes interpretable by an application process. Conversely, each network agent must be able to convert application information into a set of one or more packets suitable for transporting across the network. Packets are thus required to traverse the protocol “stack” of layers twice during each transaction, once as they descend the stack (from application layer to physical layer) at the source and again as they ascend the stack (from physical layer to application layer) at the destination.
Full TCP/IP processing of each network object can be time consuming and processor intensive. Generating and checking checksums to facilitate error detection, allocating and deallocating memory for requested objects, packet framing and deframing, data copying, general protocol processing, and other required tasks can place a performance limiting load on the server cluster. It would therefore be desirable to reduce the amount of network processing required of servers that use widely implemented protocols stacks like TCP/IP.
Data objects that are retrieved by clients may be broadly classified into static objects and dynamic objects. Static objects are objects or files that are filly self-contained and change infrequently. For instance, a static Web page is typically available as a file that need not be generated at request time by the server. Also, once the Web page is generated, it is typically available under the same Universal Resource Identifier (URI) and rarely changes thereafter. To serve static objects in response to a client's data retrieval request, the server typically reads the object from its persistent or volatile storage, formats it into one or more network packets according to TCP/IP, and sends it to the client over the network. Thus, in a conventionally implemented server, static objects incur substantial overhead in network processing. If a static object is repeatedly accessed by clients in data retrieval mode, as is common in Web and file servers, the same amount of network processing is repeatedly applied even though the resulting object does not usually vary from one instance to the next. With the exception of the destination Internet address and some other minor protocol-related information, a packet generated from a static object is essentially the same each time it is generated. Because static objects represent an appreciable percentage of installed web pages, it would be desirable to implement a method and system in which the network processing of static objects is substantially reduced.